package pojo;
import lombok.*;
import lombok.extern.java.Log;

/**
 * @BelongsProject: Java_learning
 * @BelongsPackage: pojo
 * @Author: song
 * @CreateTime: 2022-11-30  06:47
 * @Description: lombok在编译阶段生效，通过AST语法树生成对应的class文件。
 * static 类型的字段不会起作用，final类型的字段只会提供get方法。
 * 常用注解：
 * @Data:作用于类上
 * @Getter：作用于类或者字段上，如果不想让某个字段生成get方法，在具体的类上加@Getter(AccessLevel.NONE)
 * @Setter：作用于类或者字段上，如果不想让某个字段生成set方法，在具体的类上加 @Setter(AccessLevel.NONE)
 * @ToString:作用在类上，生成一个tostring方法。排除某个字段@ToString(exclude = {"email"})
 * @EqualsAndHashCode：重写了equals和hashcode方法，判断两个对象是否相等,@EqualsAndHashCode(exclude = {"email","password"},of = {"id","name","sex"})
 * @NonNull:不允许为空值。
 * @NoArgsConstructor:无参构造函数
 * @RequiredArgsConstructor：有参构造函数
 * @AllArgsConstructor：所有字段
 * @Builder:链式编程
 * @Log:日志
 * @Version: 1.0
 */
@Data
//@ToString(exclude = {"email"},of = {"必须包含的字段"})
//@EqualsAndHashCode(exclude = {"email","password"},of = {"id","name","sex"})
//@NoArgsConstructor
//@RequiredArgsConstructor
//@AllArgsConstructor
//@Builder
@Log
public class User {
    static Integer num = 33567;
    final String s = "syz";
   // @Getter(AccessLevel.PROTECTED)
    private Integer id;
    //@Setter(AccessLevel.MODULE)
    private String name;
    private Character sex;
    private String password;
    private String phone;
    //@Getter(AccessLevel.NONE)
    //@Setter(AccessLevel.NONE)
    private String email;

    public void test(@NonNull String s){
        log.info("测试成功！");
        System.out.println(s);
    }
}
